////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __WN_SCRIPT_DEFINED_ELEMENT_H__
#define __WN_SCRIPT_DEFINED_ELEMENT_H__

#include "WNScripting/inc/WNIdentifierMap.h"
#include "WNScripting/inc/WNTypeManager.h"

enum WNScriptDefinedElementType {
    eWNScriptFunction,
    eWNScriptStruct,
    eWNScriptInclude
};

struct WNScriptDefinedElement {
    WNScriptDefinedElementType mType;
    WNIdentifierElement mGlobalIdentifier;
    WNIdentifierElement mFileName;
    WNIdentifierElement mIncludeName;
    WN_SIZE_T mLineNumber;
    WN_SIZE_T mOffset;
    WN_SIZE_T mEndOffset;
    WNTypeElement mReturnType;
    WN_BOOL mOnStack;
    std::vector<WNTypeElement> mArguments;
    std::vector<WNIdentifierElement> mArgumentNames;
};

#endif // __WN_SCRIPT_DEFINED_ELEMENT_H__